package framework.basedao;

import java.io.Serializable;
import java.util.List;

/**
 * Created by lliu on 2015/11/7.
 */
public interface GenericDao<E, I extends Serializable> extends CrudDao<E, I> {

    /**
     * 条件查询
     *
     * @param hql
     * @param params
     * @return
     */
    List<E> query(String hql, Object[] params);

    /**
     * 统计行数
     *
     * @param countSql eg:"select count(*) from tableName where name=?"
     * @param params
     * @return
     */
    long count(String countSql, Object[] params);

    /**
     * 条件,分页查询
     *
     * @param hql
     * @param params
     * @param firstResult 起始记录下标(第一条记录,下标从0开始)
     * @param maxResult   结果集数量
     * @return
     */
    List<E> query(String hql, Object[] params, int firstResult, int maxResult);
}
